home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The CICA Windows Explosion!
/
The CICA Windows Explosion! - Disc 2.iso
/
programr
/
dpmigcc5.zip
/
RSX
/
SOURCE
/
FS.H
< prev
next >
Wrap
C/C++ Source or Header
|
1994-12-12
|
3KB
|
96 lines
#ifndef _FS_H
#define _FS_H
#define FMODE_READ 1
#define FMODE_WRITE 2
#if !defined (FD_SETSIZE)
#define FD_SETSIZE 256
typedef struct _fd_set
{
unsigned long bits[(FD_SETSIZE+31) / 32];
} fd_set;
#define fd_index(c) ((c) >> 5)
#define fd_mask(c) (1 << ((c) & 31))
#define FD_SET(fd, map) ((map)->bits[fd_index(fd)] |= fd_mask(fd))
#define FD_CLR(fd, map) ((map)->bits[fd_index(fd)] &= ~(fd_mask(fd)))
#define FD_ISSET(fd, map) ((map)->bits[fd_index(fd)] & fd_mask(fd))
#define FD_ZERO(s) (void)memset(s, 0, sizeof (*(s)))
#endif
typedef struct
{
unsigned long bits[N_FD];
} p_fdset;
struct pipe_info {
unsigned long memhandle;
unsigned long memaddress;
long pos;
long len;
long size;
unsigned int rd_openers;
unsigned int wr_openers;
unsigned int readers;
unsigned int writers;
unsigned int sel;
} ;
union file_info {
struct pipe_info pipe_i;
/* others */
};
struct file {
unsigned short f_mode; /* 1=RD, 2=WR */
unsigned short f_flags; /* NDELAY etc */
unsigned short f_count; /* no processes */
short f_doshandle; /* real dos handle or -1 */
unsigned long f_offset; /* seek pos */
struct file_operations *f_op; /* file ops */
union file_info * f_info; /* extra information */
};
typedef long ARGUSER;
struct file_operations {
long (*lseek) (struct file *, long, int);
ARGUSER (*read) (struct file *, ARGUSER, ARGUSER);
ARGUSER (*write) (struct file *, ARGUSER, ARGUSER);
int (*select) (struct file *, DWORD);
int (*ioctl) (struct file *, ARGUSER, ARGUSER);
int (*open) (struct file *, ARGUSER);
void (*release) (struct file *);
};
extern struct file rsx_filetab[RSX_NFILES];
struct _select {
DWORD nfds;
DWORD readfds;
DWORD writefds;
DWORD excepfds;
DWORD time;
};
void init_rsx_filetab(void);
int get_empty_proc_filp(void);
int get_dos_handle(int);
int sys_close(int);
int sys_dup2(unsigned int, unsigned int);
int sys_dup(unsigned int);
ARGUSER sys_read(int fd, ARGUSER buf, ARGUSER bytes);
ARGUSER sys_write(int fd, ARGUSER buf, ARGUSER bytes);
long sys_lseek(int fd, long off, int orgin);
int sys_select(ARGUSER select);
int sys_ioctl(int fd, ARGUSER request, ARGUSER arg);
int sys_pipe(ARGUSER size, ARGUSER arg);
extern struct file_operations msdos_fop;
extern struct file_operations pipe_fop;
#endif /* _FS_H */